<?php
/**
 * filename Template.php
 * 作用：注入Controller中。
 *			 能够在Controller里面使用render
 *	Author: renshan
 */

namespace Mkd\Core\Foundation\Traits;

/**
 * @trait Template
 */
trait Template
{
	/**
	 * @param $template
	 * @param $parameters
	 * @exception Exception
	 * @return array
	 */
	public function render($template, Array $parameters)
	{
		/**
		 * 解析传入的包名和模板路径
		 */
		$pathArr = explode(":", $template);
		if (count($pathArr) < 2) {
			throw new \Exception("Template {$template} dose not exists");
		}

		/**
		 * 组装真实的模板所在路径
		 */
		$bundlePath = $pathArr[0];
		$viewsPath = $realPath = ROOT."/src/".$bundlePath."/Views/";
		for ($i=1; $i<count($pathArr)-1; $i++) {
			$realPath .= $pathArr[$i]."/";
		}

		/**
		 * 模板文件名
		 */
		$file = $pathArr[$i];

		if (!file_exists($realPath.$file)) {
			throw new \Exception("Template file {$realPath}{$file} dose not exists");
		}

		$diff = explode($viewsPath, $realPath);
		$file = $diff[1].$file;

		\Twig_Autoloader::register();
		$loader = new \Twig_Loader_Filesystem($viewsPath);
		$twig = new \Twig_Environment($loader, ['cache' => ROOT.'/var/cache/template', 'debug' => true]);
		$template = $twig->loadTemplate($file);
		return [$twig, $template, $parameters];
	}
}

?>
